In a digital communication system, data transmitted may be digital messages originating from a data source, for example a computer server, a mobile device, or a keyboard. The communication channel between the data sources may be unreliable or noisy. Thus, FEC coding or channel coding is introduced to control errors in data transmission. By using FEC, the sender encodes their message in a redundant way by using an error-correcting code (ECC). The redundancy allows the receiver to detect a limited number of errors that may occur anywhere in the message, and often to correct these errors without retransmission.